package pe.com.hermes.hermetic.web.controller.transacciones;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.beans.CargaPedidoBean;
import pe.com.hermes.hermetic.beans.CargaPedidoLineaBean;
import pe.com.hermes.hermetic.beans.ClienteBean;
import pe.com.hermes.hermetic.beans.DenominacionMonedaBean;
import pe.com.hermes.hermetic.beans.DenominacionPedidoBean;
import pe.com.hermes.hermetic.beans.ParametroBean;
import pe.com.hermes.hermetic.beans.PedidoTemporalBean;
import pe.com.hermes.hermetic.beans.PedidosBean;
import pe.com.hermes.hermetic.beans.TiposBean;
import pe.com.hermes.hermetic.beans.TransaccionPedidoBean;
import pe.com.hermes.hermetic.errors.ErrorFactory;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.web.controller.base.IController;
import pe.com.hermes.hermetic.web.controller.general.MostrarReporteController;

import pe.com.hermes.hermetic.web.forms.HMF2005MostrarForm;
import pe.com.hermes.hermetic.web.forms.HMF2005MostrarForm;

import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;

import pe.com.hermes.hermetic.negocio.ultil.Util;

import pe.com.hermes.hermetic.web.controller.base.IWebOpciones;

import java.io.BufferedReader;
import java.io.File;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;

@RequestMapping("/mostrarHWF2004.html")
@Controller
public class CargarTransferenciaController implements IController {
    private Logger logger = Logger.getLogger(this.getClass());
    @Autowired
    private HermeticFacade servicioHermetic;
    @Autowired
    private DataSourceTransactionManager transactionManager;
    @Autowired
    private MostrarReporteController reporteFactory;
    @RequestMapping(method=RequestMethod.GET)
    protected String showForm(ModelMap model, HttpServletRequest request)throws Exception{
        logger.info("method: GET");
        HMF2005MostrarForm form = new HMF2005MostrarForm();
        form.setFormulario("HMR2004");
        AuditBean auditBean = new AuditBean(CARG_TRANS);
        servicioHermetic.inseAudit(auditBean);
        String codOpci = IWebOpciones.CARG_TRANS;
        String desOpci = servicioHermetic.getDesOpci(codOpci, request);
        model.put("codOpci",codOpci);
        model.put("desOpci",desOpci);
        model.put(FORM_KEY,form);
        return FORM_CARG_TRAN;
    }
    @RequestMapping(params="accion=loadFile")
    protected String loadFile(ModelMap model,@ModelAttribute(FORM_KEY) HMF2005MostrarForm form, BindingResult result, HttpServletRequest request) throws Exception{
        logger.info("loadFile");
        String view = FORM_CARG_TRAN;
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);        
        if(result.hasErrors())
            return view;
        MultipartFile file = form.getFile();        
        HttpSession session = request.getSession(false);
        model.put(FORM_CARG_TRAN,form);
        if(file.isEmpty())
            return FORM_KEY;
        String rutaDirectorio = request.getSession(false).getServletContext().getInitParameter("rutaDirectorio");        
        try{
            model.put(FORM_KEY,form);
            File fileDest = new File(rutaDirectorio+file.getOriginalFilename());
            file.transferTo(fileDest);            
            form.setRutaArchivo(rutaDirectorio+file.getOriginalFilename());
            form.setEncontrado(false);
            String usuario = (String)session.getAttribute("usuario");
            String codClienteBanco = (String)session.getAttribute("cliente");
            String sucursal = (String)session.getAttribute("sucursal");
            form.setUsuario_logueado(usuario);
            form.setSucursal_logueado(sucursal);
            form.setCliente_logueado(codClienteBanco);            
            //limpio el Listado de carga
            form.setListCargaPedido(null);
            form.setFlagGrabar(null);
            form.setListCargaTransferencia(new ArrayList());
            String fechaServidor = servicioHermetic.getFechaHoy();
            String horaServidor = 
                servicioHermetic.getFecha2().substring(8, 13);
            form.setFecha(fechaServidor);
            form.setHora(horaServidor);
            if (codClienteBanco != null) 
                form.setLongMaxPorLinea(ConstantesHermetic.TRANSFERENCIA_LONGITUD_MAX_LINEA_WONG);
            validaEstructuraArchivoTexto(form,result);            
            if(!result.hasErrors()){
                form.setListTransacciones(getListadoPedido(form,request));
                form.setListCargaTransferencia(getListCargaTransferencia(form));
                session.setAttribute("listTransacciones",form.getListTransacciones());
                session.setAttribute("listCargaTransferencia",form.getListCargaTransferencia());
                session.setAttribute("listCargaLinea",form.getListCargaLinea());
                session.setAttribute("listMontos",form.getListMontos());
                view = FORM_CARG_TRAN_CAMB_SUCU;
            }            
        }catch(Exception e){
            logger.error(e);
            e.printStackTrace();
            result.addError((new FieldError(FORM_KEY,"sMens",1,false , new String[] {"accion.cargar.pedidos.error"}, new String[] {}, "")));
        }
        return view;
    }
    @RequestMapping(params="accion=grabarTransferencia")
    protected String grabarTransferencia(ModelMap model,@ModelAttribute(FORM_KEY) HMF2005MostrarForm form, BindingResult result, HttpServletRequest request) throws Exception{
        logger.info("grabar");        
        HttpSession session = request.getSession(false);
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        String codClienteBanco = (String)session.getAttribute("cliente");
        String sucursalSession = (String)session.getAttribute("sucursal");
        String view = FORM_CARG_TRAN_CAMB_SUCU;
        form.setCliente(codClienteBanco);
        form.setSucursal(sucursalSession);
        List listTransacciones = (List)session.getAttribute("listTransacciones");
        List listCargaTransferencia = (List)session.getAttribute("listCargaTransferencia");
        List listCargaLinea = (List)session.getAttribute("listCargaLinea");
        List listMontos = (List)session.getAttribute("listMontos");
        form.setListTransacciones(listTransacciones);
        form.setListCargaTransferencia(listCargaTransferencia);
        form.setListCargaLinea(listCargaLinea);
        form.setListMontos(listMontos);
        int resultadoClave = 0;
        resultadoClave = servicioHermetic.verifica_clave_car_aut(codClienteBanco, form.getClave());                                                                        
        if (resultadoClave == ConstantesHermetic.VALIDA_CLAVE_OK) {
            //clave correcta
            //NOMBRE ARCHIVO
            String archivo = 
                form.getRutaArchivo().substring(0, form.getRutaArchivo().indexOf("."));
            archivo = archivo.substring(archivo.lastIndexOf("/") + 1);
            if (archivo.length() > 30)
                archivo = archivo.substring(archivo.length() - 30);
            List listCargTrans = getListTransf(form);
            boolean enc = servicioHermetic.validaPedidoRepetido(listCargTrans);
            boolean continuar= false;
            enc = false;
            if(form.getContinuar().equalsIgnoreCase("true"))
                continuar = true;
            if(enc&&!continuar){
                form.setEncontrado(true);
                result.addError(new ErrorFactory("accion.cargar.grabar.yaregistrada"));                
            }
            if(enc&&continuar||!enc){                    
                DefaultTransactionDefinition def = new DefaultTransactionDefinition();
                def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
                TransactionStatus status = transactionManager.getTransaction(def);
                try {
                     servicioHermetic.insertarPedido(listCargTrans);
                     insertarTransaccion(form,request);
                     transactionManager.commit(status); 
                    //TERMINO GRABAR PEDIDOS
                    result.addError(new ErrorFactory("accion.cargar.grabar.ok"));
                    model.put("resultOk",true);
                    view = FORM_CARG_TRAN_RESULT;
                } catch (Exception ex) {
                    result.addError(new ErrorFactory("accion.cargar.grabar.error"));                    
                    ex.printStackTrace();
                    form.setEncontrado(false);
                    transactionManager.rollback(status);
                }
            }
            } 
            else if (resultadoClave == ConstantesHermetic.VALIDA_CLAVE_NO_AUTORIZADA) {
                form.setClave("");
                result.addError(new ErrorFactory("accion.cargar.grabar.noAutorizada"));
            } else if (resultadoClave == ConstantesHermetic.VALIDA_CLAVE_NO_REGISTRADA) {
                form.setClave("");
                result.addError(new ErrorFactory("accion.cargar.grabar.noRegistrada"));                
            } else {
                form.setClave("");
                result.addError(new ErrorFactory("accion.cargar.grabar.noExiste"));
            }
            return view;
            
    }
    
    @RequestMapping(params="accion=mostrarReporte")
    protected void mostrarReporte(ModelMap model,@ModelAttribute(FORM_KEY) HMF2005MostrarForm form, BindingResult result, HttpServletRequest request,HttpServletResponse response) throws Exception{
        logger.info("mostrarReporte");       
        String codClie=(String)request.getSession(false).getAttribute("cliente");
        reporteFactory.mostraReporte(request,response,codClie);
            
    }
    private void validaEstructuraArchivoTexto(HMF2005MostrarForm form, BindingResult result) throws FileNotFoundException, 
                                                                                         IOException {
        String lineaTexto = null;
            logger.info("validaEstructuraArchivoTexto nombre: " + form.getRutaArchivo());
            if (form.getRutaArchivo() == null) {
                result.addError(new ErrorFactory("accion.cargar.pedidos.error.ruta"));                
                return;
            }
            if (form.getLongMaxPorLinea() <= 0) {
                result.addError(new ErrorFactory("accion.cargar.pedidos.error.MaxLineaCero")); 
                return;
            }

            BufferedReader breader = 
                new BufferedReader(new FileReader(form.getRutaArchivo()));

            String lineasBlanco = null;
            String lineasDifiereMax = null;
            int contadorLinea = 1;
            String separador = ",";
            lineaTexto = breader.readLine();

            while (lineaTexto != null) {
                //valido el tamano total de la linea 
                if (lineaTexto == null || lineaTexto.trim().length() == 0) {
                    lineasBlanco = 
                            lineasBlanco != null ? lineasBlanco + separador + 
                            contadorLinea : String.valueOf(contadorLinea);
                }
                //valido el tamano MAX de la linea
                if (lineaTexto != null && 
                    form.getLongMaxPorLinea() != lineaTexto.length()) {
                    lineasDifiereMax = 
                            lineasDifiereMax != null ? lineasDifiereMax + 
                            separador + contadorLinea : 
                            String.valueOf(contadorLinea);
                }                                               
            
                lineaTexto = breader.readLine();
            }   
        breader.close();

        if (lineasBlanco != null) {
            result.addError(new ErrorFactory("accion.cargar.pedidos.error.LineaBlanco", new Object[]{lineasBlanco}));             
        }
        if (lineasDifiereMax != null) {
            result.addError(new ErrorFactory("accion.cargar.pedidos.error.ruta", new Object[]{lineasDifiereMax,form.getLongMaxPorLinea()}));
        }
        return;
    }
    private List getListadoPedido(HMF2005MostrarForm form, 
                                                      HttpServletRequest request) throws FileNotFoundException, 
                                                                     IOException {
    List listPedidos = new ArrayList();
    BufferedReader breader = 
            new BufferedReader(new FileReader(form.getRutaArchivo()));
    String lineaTexto = breader.readLine();
    try{
        String nom_comp = request.getServerName();  
        while (lineaTexto != null) {
                CargaPedidoLineaBean cargaLineaBean = new CargaPedidoLineaBean();
                cargaLineaBean.setLinea(lineaTexto);
                ParametroBean parametroBean = Util.getParametro(lineaTexto);
                String cnta_orig = parametroBean.getCuentaOrig();
                String clie = parametroBean.getClieDest();
                String cnta_dest = parametroBean.getCuentaDest();
                String fec_cont = parametroBean.getFechCont();
                String obs = parametroBean.getObs();
                String bove = parametroBean.getCodBove();
                String mont = parametroBean.getMont();
                String tip_bill = parametroBean.getTipBill();
                if(tip_bill==null||tip_bill.equals(""))
                    tip_bill = ConstantesHermetic.CTE_TIPO_BILLETE_MOVI;
                //calculo unidad monetaria
                form.setTipoMonedaCarga(String.valueOf(servicioHermetic.getTipoUnidadMonetaria(form.getSucursal_logueado(),bove)));
                String cod_punt = servicioHermetic.getCodPuntoOrigen(form.getSucursal_logueado(),clie,cnta_dest);
                PedidoTemporalBean pedidoTemp = new PedidoTemporalBean();
                //datos a insertar en el pedido
                PedidosBean pedidoBean = new PedidosBean();
                pedidoBean.setSerie(getSerie(form.getSucursal_logueado()));
                pedidoBean.setClienteOrigen(form.getCliente_logueado());
                pedidoBean.setCuentaOrigen(cnta_orig);
                pedidoBean.setCodPunto(cod_punt);
                pedidoBean.setDirecEntrega(null);
                pedidoBean.setFechaAten(fec_cont);
                pedidoBean.setFechaAper(fec_cont);
                pedidoBean.setIndProg(ConstantesHermetic.IND_PROG_TRANSF);
                pedidoBean.setUsuarioGenera(form.getUsuario_logueado());
                pedidoBean.setSucursal(form.getSucursal_logueado()); 
                pedidoBean.setCodigoSucursalPedido(form.getSucursal_logueado());
                pedidoBean.setHoraInicioAte(null);
                pedidoBean.setCodigoDiario(form.getClave());
                pedidoBean.setTipoPedido(ConstantesHermetic.TIPO_PEDIDO_TRANF);
                pedidoBean.setTipoDestinoPedido(null);
                pedidoBean.setCodClieFact(clie);                
                pedidoBean.setCuentaDestino(cnta_dest);
                pedidoBean.setClienteDestino(clie);                
                pedidoBean.setFechaSoliPedido(form.getFecha());
                pedidoBean.setHoraSoli(form.getHora());
                pedidoBean.setNom_comp(nom_comp);
                pedidoBean.setObservaciones(obs);
                
                pedidoTemp.setSerie(pedidoBean.getSerie());
                pedidoTemp.setCliente(form.getCliente_logueado());                    
                pedidoTemp.setCodCntaOrig(cnta_orig);
                pedidoTemp.setCodCntaDest(cnta_dest);
                pedidoTemp.setCodigoPunto(cod_punt);
                pedidoTemp.setDireccion(null);
                pedidoTemp.setFechaAtencion(fec_cont);
                pedidoTemp.setFechaContable(fec_cont);
                pedidoTemp.setCodBove(bove);
                pedidoTemp.setObs(obs);
                pedidoTemp.setFec_soli(form.getFecha());
                pedidoTemp.setHora_soli(form.getHora());                    
                pedidoTemp.setUsuario(form.getUsuario_logueado());
                pedidoTemp.setUsuarioCrea(form.getUsuario_logueado());
                pedidoTemp.setSucursal(form.getSucursal_logueado());
                pedidoTemp.setCodClieFact(clie);
                pedidoTemp.setHoraAtencion(form.getFecha());
                pedidoTemp.setCodigoDiario(form.getClave());
                pedidoTemp.setTipoDestinoPedido(null);
                pedidoTemp.setSucursalOriginal(form.getSucursal_logueado());
                pedidoTemp.setNom_comp(nom_comp);
                //datos de detalle
                pedidoTemp.setPedidoBean(pedidoBean);
                pedidoTemp.setTotalBilletes("0");
                pedidoTemp.setTotalMonedas(mont);
                pedidoTemp.setCodClieOrig(form.getCliente_logueado());
                pedidoTemp.setTipoBillete(tip_bill);
                pedidoTemp.setCodigoSucursal(pedidoTemp.getSucursal());
                pedidoTemp.setUnidadMonetaria(String.valueOf(servicioHermetic.getTipoUnidadMonetaria(form.getSucursal_logueado(),bove)));
                //datos a insertar en las denominaciones
                 DenominacionPedidoBean denoBean = new DenominacionPedidoBean();
                 List listadoTemp = new ArrayList();
                 if(Double.valueOf(mont).doubleValue()>0){
                     denoBean.setTipoMoneda(ConstantesHermetic.CARGA_TIPO_MONEDA_MONE);
                     denoBean.setCodigoDenominacion(new StringBuffer("d").append(ConstantesHermetic.CARGA_TIPO_MONEDA_MONE).append(ConstantesHermetic.COD_DENO_001).toString());
                     denoBean.setCantidad(String.valueOf(mont));
                     listadoTemp.add(denoBean);
                 }
                pedidoTemp.setListadoDenominacion(listadoTemp);
                listPedidos.add(pedidoTemp);
                form.getListCargaLinea().add(cargaLineaBean);
                lineaTexto = breader.readLine();
            }
            breader.close();
        }catch(Exception e){
        e.printStackTrace();
        breader.close();
        }
        return listPedidos;
    }
    
    private String getSerie(String sucursal) {
        StringBuffer serie = new StringBuffer();
        if (sucursal.length()==1)
            serie.append("A0").append(sucursal);
        else
            serie.append("A").append(sucursal);
        return serie.toString();
    }

    private List getListCargaTransferencia(HMF2005MostrarForm form) {
        List listMontos = new ArrayList();
        String fecha = servicioHermetic.getFecha2().substring(0,8);
        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
        dfs.setDecimalSeparator('.');
        dfs.setGroupingSeparator(',');
        DecimalFormat df1 = new DecimalFormat("###,###,##0.00", dfs);
        df1.setGroupingSize(3);
        for(Iterator ite = form.getListTransacciones().iterator();ite.hasNext();){            
            CargaPedidoBean cargaPedidoBean = new CargaPedidoBean();
            cargaPedidoBean.setTransacOk(true);
            PedidoTemporalBean pedidoTemp = (PedidoTemporalBean) ite.next();
            double totalBilletes= Double.parseDouble(pedidoTemp.getTotalBilletes());
            double totalMonedas= Double.parseDouble(pedidoTemp.getTotalMonedas());
            double totalMonto = totalBilletes + totalMonedas;
            String total = String.valueOf(totalMonto);
            //valores de muestra a jsp            
            cargaPedidoBean.setCodCuentaOrigen(pedidoTemp.getCodCntaOrig());
            cargaPedidoBean.setCodDestino(pedidoTemp.getCodClieFact());
            cargaPedidoBean.setCodCuentaDest(pedidoTemp.getCodCntaDest());
            cargaPedidoBean.setFechaContable(pedidoTemp.getFechaContable());
            cargaPedidoBean.setObs(pedidoTemp.getObs());
            cargaPedidoBean.setCodBove(pedidoTemp.getCodBove());
            cargaPedidoBean.setTipUnidMone(pedidoTemp.getUnidadMonetaria());
            cargaPedidoBean.setMontoTransString(df1.format(Double.parseDouble(pedidoTemp.getTotalMonedas())));
            //seteo pedidoRepetido
            cargaPedidoBean.setTransacRepet(servicioHermetic.getValPedido(pedidoTemp.getSucursal(),pedidoTemp.getCodigoPunto(),pedidoTemp.getUnidadMonetaria(),pedidoTemp.getFechaAtencion(),total, pedidoTemp.getPedidoBean().getTipoPedido()));
            
            //carga valores de error 
            //valido cuenta origen
            cargaPedidoBean.setDesCuentaOrigen(servicioHermetic.getDescripcion(form.getSucursal_logueado(),form.getCliente_logueado(),cargaPedidoBean.getCodCuentaOrigen()));
            if(cargaPedidoBean.getDesCuentaOrigen().equalsIgnoreCase("")){
                //form.setFlagGrabar("false");
                cargaPedidoBean.setTransacError(true);
                cargaPedidoBean.setTransacOk(false);
                cargaPedidoBean.setDesCuentaOrigenError("No se puede registrar la transferencia!!!...la cuenta no es valida");
            }
            //valido cliente destino
            ClienteBean clienteBean = servicioHermetic.getCliente(pedidoTemp.getCodClieFact());
            if(clienteBean.getNombre()!=null) 
                cargaPedidoBean.setDesDestino(clienteBean.getNombre());
            else{
                cargaPedidoBean.setDesDestino("");
                    //form.setFlagGrabar("false");
                     cargaPedidoBean.setTransacOk(false);
                     cargaPedidoBean.setTransacError(true);
                cargaPedidoBean.setDesDestinoError("No se puede registrar la transferencia!!!...el destino no es valido");
                }
            //valido cuenta destino
            cargaPedidoBean.setDesCuentaDest(servicioHermetic.getDescripcion(form.getSucursal_logueado(),pedidoTemp.getCodClieFact(),cargaPedidoBean.getCodCuentaDest()));
            if(cargaPedidoBean.getDesCuentaDest().equalsIgnoreCase("")){
                //form.setFlagGrabar("false");
                 cargaPedidoBean.setTransacOk(false);
                cargaPedidoBean.setTransacError(true);
                cargaPedidoBean.setDesCuentaDestError("No se puede registrar la transferencia!!!...la cuenta no es valida");
            }
            //valido fecha contable
             String fec_proc_aper = pedidoTemp.getFechaContable().trim().substring(6) + pedidoTemp.getFechaContable().trim().substring(3,5) + pedidoTemp.getFechaContable().trim().substring(0,2);
             if (!(fec_proc_aper.compareTo(fecha) >= 0)){
                 //form.setFlagGrabar("false");
                  cargaPedidoBean.setTransacOk(false);
                 cargaPedidoBean.setTransacError(true);
                 cargaPedidoBean.setFechaContableError("No se puede registrar la transferencia!!!...la fecha contable no es valida");
             }
            //valido tipo de unidad monetaria
            cargaPedidoBean.setDesMoneda(servicioHermetic.getDescripcionGenerica("19",cargaPedidoBean.getTipUnidMone(),"2"));
            //valido desc de boveda
            cargaPedidoBean.setDesBove(servicioHermetic.getDescripcionGenerica("180",pedidoTemp.getCodBove(),"1"));
            if(cargaPedidoBean.getDesBove().equalsIgnoreCase("")){
                //form.setFlagGrabar("false");
                 cargaPedidoBean.setTransacOk(false);
                 cargaPedidoBean.setTransacError(true);
                cargaPedidoBean.setCodBoveError("No se puede registrar la transferencia!!!...la Boveda ingresada no es valida\"");            
            }
            //valido monto
            if(cargaPedidoBean.getMontoTransString().equalsIgnoreCase("")){
                //form.setFlagGrabar("false");
                 cargaPedidoBean.setTransacOk(false);
                 cargaPedidoBean.setTransacError(true);
                cargaPedidoBean.setMontoTransStringError("No se puede registrar la transferencia!!!...el monto no puede ser vacio");
            }
                
            form.getListCargaTransferencia().add(cargaPedidoBean);
        }
        List listUnidMone = servicioHermetic.getTipoUniMone();
        for(Iterator iter = listUnidMone.iterator(); 
                 iter.hasNext(); ){
            TiposBean unid_mone =(TiposBean)iter.next();
            DenominacionMonedaBean monto = new DenominacionMonedaBean();
            double montoTot = 0;
            for(Iterator itera = form.getListTransacciones().iterator();itera.hasNext();){
                 PedidoTemporalBean bean = (PedidoTemporalBean) itera.next();
                if(bean.getUnidadMonetaria().equalsIgnoreCase(unid_mone.getCodigo())){
                    montoTot = montoTot + Double.parseDouble(bean.getTotalMonedas().replaceAll(",",""));
                }
             }    
            if(montoTot!=0.00){
                monto.setCodDenominacion(unid_mone.getCodigo());
                monto.setMensaje(unid_mone.getDescripcion());
                monto.setMontoDeno(df1.format(montoTot));
                listMontos.add(monto);
            }
        }
        form.setListMontos(listMontos);
        return form.getListCargaTransferencia();
    }

    private List getListTransf(HMF2005MostrarForm form) {
        String indexTransferencia[] = form.getIndexTransferencia();
        List cargaTranf = form.getListTransacciones();
        List cargaTranfNueva = new ArrayList();
        for(int i = 0; i<cargaTranf.size();i++){
            PedidoTemporalBean pedido = (PedidoTemporalBean)cargaTranf.get(i);
            pedido.getPedidoBean().setCodigoDiario(form.getClave());
            cargaTranfNueva.add(pedido);
        }
        cargaTranf = cargaTranfNueva;
        List newCargTransf = new ArrayList();
        int tamanoCheck = indexTransferencia.length;
        for (int i=0; i<tamanoCheck;i++){            
            int index = Integer.parseInt(indexTransferencia[i]);
            newCargTransf.add(cargaTranf.get(index));                
        }
        return newCargTransf;
    }
    private void insertarTransaccion(HMF2005MostrarForm form,HttpServletRequest request) throws Exception {
        HttpSession session = request.getSession(false);
        String codClienteBanco = (String)session.getAttribute("cliente");
        String sucursalSession = (String)session.getAttribute("sucursal");
        String usuario = (String)session.getAttribute("usuario");
        CargaPedidoLineaBean cargaLineaBean = null;
        TransaccionPedidoBean transaccionBean = null;
        List listCargaLinea = form.getListCargaLinea();
        int secTransacPedido = 0;
        //OBTENGO EL NUMERO DE TRANSACCION
        String transaccion = 
            servicioHermetic.getNumeroTransaccion();
        //NOMBRE ARCHIVO
        String archivo = 
            form.getRutaArchivo().substring(0, form.getRutaArchivo().indexOf("."));
        archivo = archivo.substring(archivo.lastIndexOf("/") + 1);
        if (archivo.length() > 30)
            archivo = archivo.substring(archivo.length() - 30);
        for (Iterator ite = listCargaLinea.iterator(); ite.hasNext(); 
        ) {
            cargaLineaBean = (CargaPedidoLineaBean)ite.next();
            secTransacPedido++;
            transaccionBean = new TransaccionPedidoBean();
            transaccionBean.setNumeroTransaccion(transaccion);
            transaccionBean.setItemSecuencia(String.valueOf(secTransacPedido));
            transaccionBean.setCodigoSucursal(sucursalSession); //CODIGO SUCURSAL
            transaccionBean.setCodigoCliente(codClienteBanco);
            transaccionBean.setNombreArchivo(archivo);
            transaccionBean.setCodigoUsuario(usuario);
            transaccionBean.setTextoTransaccion(cargaLineaBean.getLinea());

            //GRABO LA TRANSACCION PEDIDO
            servicioHermetic.insertarTransaccionPedido(transaccionBean);

        }
    }
}
